package com.rasenhund.android.grecorder.activity;

import java.util.ArrayList;

import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

import com.rasenhund.android.grecorder.R;
import com.rasenhund.android.grecorder.adapter.HistoryListAdapter;
import com.rasenhund.android.grecorder.common.Const;
import com.rasenhund.android.grecorder.dao.RecordDao;
import com.rasenhund.android.grecorder.helper.DbHelper;
import com.rasenhund.android.grecorder.schema.StageRecord;

/**
 * 履歴一覧画面
 */
public class HistoryListActivity extends BaseActivity {
    @SuppressWarnings("unused")
    private static final String TAG = HistoryListActivity.class.getSimpleName();
    private final HistoryListActivity self = this;

    HistoryListAdapter mAdapter = null;

    TextView mTxtNoData = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_history);

        mTxtNoData = (TextView) findViewById(R.id.txtNoData);

        // ヘッダ
        mTxtArmyEfsf = (TextView) findViewById(R.id.txtArmy_Efsf);
        mTxtArmyPoz = (TextView) findViewById(R.id.txtArmy_Poz);

    }

    @Override
    protected void onResume() {
        super.onResume();

        // 軍属に応じてヘッダを変更
        setArmyHeaderVisibility(mArmyCd);

        // 一覧の取得
        reloadList();

    }

    // /**
    // * オプションアイテムメニューが最初に表示されるときの処理
    // */
    // @Override
    // public boolean onCreateOptionsMenu(Menu menu) {
    //
    // // メニューに表示するレイアウトファイルを指定
    // getMenuInflater().inflate(R.menu.menu, menu);
    //
    // return super.onCreateOptionsMenu(menu);
    // }
    //
    // /**
    // * オプションアイテムメニューが選択されたときの処理
    // */
    // @Override
    // public boolean onOptionsItemSelected(MenuItem item) {
    //
    // // 連邦軍・ジオン軍を切り替え
    // changeCurrentArmy();
    //
    // // 一覧の最表示
    // reloadList();
    //
    // return super.onOptionsItemSelected(item);
    // }

    /********************
     * EventListener
     ********************/

    /**
     * ListItem クリック時のイベントリスナ
     */
    final OnItemClickListener lstHistory_OnItemClickListener = new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {

            StageRecord record = mAdapter.getItem(pos);

            Intent intent = new Intent(self, HistoryDetailActivity.class);
            intent.putExtra(Const.KEY.KEY_ROWID, record.getRowId());
            startActivity(intent);

        }

    };

    /********************
     * Method
     ********************/

    /**
     * 一覧の再取得
     */
    private void reloadList() {

        ArrayList<StageRecord> list = null;

        // 表示用データの取得
        DbHelper dbHelper = null;
        SQLiteDatabase db = null;

        try {

            dbHelper = new DbHelper(self);
            db = dbHelper.getWritableDatabase();
            RecordDao dao = new RecordDao(db);

            list = dao.selectAll(false, mArmyCd);

        } finally {
            if (db.isOpen()) {
                db.close();
            }
        }

        // viewの初期化
        mAdapter = new HistoryListAdapter(self, list);

        ListView lstHistory = (ListView) findViewById(R.id.lstHistory);
        lstHistory.setOnItemClickListener(lstHistory_OnItemClickListener);
        lstHistory.setAdapter(mAdapter);

        // データがなければNo Dataを表示
        if (list.size() == 0) {
            mTxtNoData.setVisibility(View.VISIBLE);
        } else {
            mTxtNoData.setVisibility(View.GONE);
        }

    }

    // // TODO: メニューと共通化できないか
    // /**
    // * 軍属の変更処理
    // */
    // private void changeCurrentArmy() {
    //
    // String sMsg = "";
    //
    // if (mArmyCd == Const.ARMY.EFSF) {
    //
    // mArmyCd = Const.ARMY.POZ;
    // sMsg = "ジオン公国軍に変更しました";
    //
    // } else if (mArmyCd == Const.ARMY.POZ) {
    //
    // mArmyCd = Const.ARMY.EFSF;
    // sMsg = "地球連邦軍に変更しました";
    //
    // }
    //
    // // // Preferenceに設定書込み
    // // setIntPreference(getStr(R.string.pref_key_current_army), mArmyCd);
    //
    // // Toast表示
    // Toast.makeText(self, sMsg, Toast.LENGTH_SHORT).show();
    //
    // }

}
